最近接触IBM DebugTool
比较多,再说一个在mainframe上面调试COBOL或者PL/I程序的技巧吧。
经常在用IBM DebugTool
或者DTCN调试程序的时候,造测试数据很不容易。如果调试过程中发现这次数据没有造成功,我们没有必要每次都退出全部程序重新造数据,可以巧妙地利用“GOTO”语句,随心所欲地在程序里面跳转。
比如下面这一个程序段,在调试过程中我们可以在Call黑盒子程序BLACKBOX
的前后都设置一个断点,即9178行以及9202行都设置一个断点,如果我们发现程序跑到了9202行但是返回码不是我们想要的结果,那么运行“GOTO 9178”
即可重新回到Call黑盒子之前,无限反复尝试,重新造数据,直到成功!
SOURCE: TESTPGM1 --1----+----2----+----3----+----4----+----5 LINE: 9178 OF 15895
0020 01 WS-FIELDS.
0021 05 WS-CALLED-PGM PIC X(08) VALUE 'BLACKBOX'.
0022 05 WS-RETURN-CD PIC X(04) VALUE SPACES.
0023 05 WS-RETURN-MSG PIC X(20) VALUE SPACES.
...
9178 INITIALIZE COMMAREA1
9179 MOVE 4500.00 TO WAGE OF COMMAREA1
9180 MOVE TODAYS-DATE TO ENROLL-DATE OF COMMAREA1
9181 SET WS-CALLED-PGM-PTR TO ADDRESS OF COMMAREA1
9182 CALL WS-CALLED-PGM USING WS-CALLED-PGM-PTR
9183 ON EXCEPTION
9184 SET CALLED-UNSUCCESSFUL TO TRUE
9185 MOVE 'ERR1' TO RETURN-CD
9186 MOVE 'CALL FAILED - EXCEPTION OCCURED'
9187 TO WS-RETURN-MSG
9188 PERFORM A9999-TERMINATION
9189 THRU A9999-EXIT
9200 END-CALL
9201
9202 IF RTN-CODE OF COMMAREA1 = ' '
.
.
.
用这种“GOTO”
的方法,同样也可以用来解决F2单步执行不小心按多了错过了代码但是还想退回去的情况,可以试试~
Comments !